home *** CD-ROM | disk | FTP | other *** search
/ L' Effet Pommier 3 / L'Effet Pommier - Volume 03.iso / Programmation / Alpha ƒ / Tcl / SystemCode / ada.tcl next >
Text File  |  1996-01-21  |  2KB  |  59 lines

  1. #===============================================================================
  2. # From Raymond Waldrop <rwaldrop@cs.tamu.edu>
  3. #===============================================================================
  4.  
  5. newModeVar Ada elecRBrace {1} 1
  6. newModeVar Ada leftFillColumn {3} 0
  7. newModeVar Ada prefixString {-- } 0 
  8. newModeVar Ada electricSemi {1} 1
  9. newModeVar Ada wordBreak {[a-zA-Z0-9_]+} 0
  10. newModeVar Ada elecLBrace {1} 1
  11. newModeVar Ada wordWrap {0} 1
  12. newModeVar Ada funcExpr {^[ \t]*(procedure|function)[ \t]+([A-Za-z][A-Za-z0-9_]*)} 0
  13. newModeVar Ada wordBreakPreface {} 0
  14. newModeVar Ada electricTab {0} 1
  15.  
  16. # Don't get used!
  17. #set adaCommentRegexp    {/\*(([^*]/)|[^*]|\r)*\*/}
  18. #set adaPreRegexp        {^\#[\t ]*[a-z]*}
  19. set adaKeyWords        {
  20.     abort abs accept access all and array at begin body case constant
  21.     declare delay delta digits do else elsif end entry exception exit
  22.     for function generic goto others if in is limited loop mod new not
  23.     null of or subtype out package pragma private procedure raise range
  24.     record rem renames return reverse select separate task terminate
  25.     then type use when while with xor = /=  := > < abstract aliased 
  26.     protected requeue tagged until
  27.     }
  28. regModeKeywords -e {--} -c magenta -k blue Ada $adaKeyWords -i ")" -i "(" -i ":" -i ";" -i "," -i "." -I blue
  29.  
  30. proc dummyAda {} {}
  31.  
  32. proc AdaMarkFile {} {
  33.     global AdamodeVars
  34.     set pos 0
  35.     
  36.     while {![catch {search -s -f 1 -r 1 -m 0 -i 1 $AdamodeVars(funcExpr) $pos} res]} {
  37.         set start [lindex $res 0]
  38.         set end [expr [lindex $res 1] + 1]
  39.         set text [getText $start $end]
  40.         if {[regexp {(procedure|function)[ \t]+} $text dummy word]} {
  41.             set tmp $word
  42.             set start [expr $start + [string first $word $text] + [string length $word]]
  43.             set text [getText $start $end]
  44.  
  45.         }
  46.         if {[regexp {([a-zA-Z0-9:_]+)} $text dummy word]} {
  47.             set tmp [expr $start + [string first $word $text]]
  48.             set inds($word) "$tmp [expr $tmp + [string length $word]]"
  49.         }
  50.         set pos $end
  51.     }
  52.     if {[info exists inds]} {
  53.         foreach f [lsort -ignore [array names inds]] {
  54.             set res $inds($f)
  55.             setNamedMark $f [lineStart [lindex $res 0]] [lindex $res 0] [lindex $res 1]
  56.         }
  57.     }
  58. }
  59.